/******************************************************************************* * Copyright (c) 2004, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.tests.zoom; import org.eclipse.ui.IWorkbenchPart; /** * This class contains tests that apply to both views and editors. Subclasses * will overload the abstract methods to determine whether editors or views * are being tested, and can define additional tests that only apply to editors * or views (or that have different results). */ public abstract class CloseTest extends ZoomTestCase { public CloseTest(String name) { super(name); } public abstract IWorkbenchPart getStackedPart1(); public abstract IWorkbenchPart getStackedPart2(); public abstract IWorkbenchPart getUnstackedPart(); /** * <p>Test: Zoom a part and hide an inactive fast view</p> * <p>Expected result: Part remains zoomed</p> */ public void testCloseInactiveFastView() { IWorkbenchPart zoomPart = getStackedPart1(); zoom(zoomPart); close(fastView); assertZoomed(zoomPart); assertActive(zoomPart); } /** * <p>Test: Zoom a part, activate a fast view, then hide the fast view</p> * <p>Expected result: Part remains zoomed</p> */ public void testCloseActiveFastView() { IWorkbenchPart zoomPart = getStackedPart1(); zoom(zoomPart); page.activate(fastView); close(fastView); assertZoomed(zoomPart); assertActive(zoomPart); } /** * <p>Test: Activate an unstacked view, zoom and activate a stacked part, then close the active part.</p> * <p>Expected result: Stack remains zoomed, another part in the zoomed stack is active</p> * <p>Note: This ensures that when the active part is closed, it will try to activate a part that * doesn't affect the zoom even if something else was activated more recently.</p> */ public void testCloseZoomedStackedPartAfterActivatingView() { IWorkbenchPart zoomPart = getStackedPart1(); IWorkbenchPart otherStackedPart = getStackedPart2(); IWorkbenchPart unstackedPart = unstackedView; page.activate(unstackedPart); zoom(zoomPart); close(zoomPart); assertZoomed(otherStackedPart); assertActive(otherStackedPart); } /** * <p>Test: Activate an unstacked editor, zoom and activate a stacked part, then close the active part.</p> * <p>Expected result: Stack remains zoomed, another part in the zoomed stack is active</p> * <p>Note: This ensures that when the active part is closed, it will try to activate a part that * doesn't affect the zoom even if something else was activated more recently.</p> */ public void testCloseZoomedStackedPartAfterActivatingEditor() { IWorkbenchPart zoomPart = getStackedPart1(); IWorkbenchPart otherStackedPart = getStackedPart2(); IWorkbenchPart unstackedPart = editor3; page.activate(unstackedPart); zoom(zoomPart); close(zoomPart); assertZoomed(otherStackedPart); assertActive(otherStackedPart); } /** * <p>Test: Activate an unstacked editor, activate a stacked part, then close the active part.</p> * <p>Expected result: The unstacked part becomes active</p> * <p>Note: This isn't really a zoom test, but it ensures that the behavior tested by * testHideZoomedStackedPartAfterActivatingEditor does not affect activation when there is no zoom.</p> */ public void testCloseUnzoomedStackedPartAfterActivatingEditor() { IWorkbenchPart activePart = getStackedPart1(); IWorkbenchPart unstackedPart = editor3; page.activate(unstackedPart); page.activate(activePart); close(activePart); assertZoomed(null); assertActive(unstackedPart); } /** * <p>Test: Zoom an unstacked part and close it.</p> * <p>Expected result: The page is unzoomed and the previously active part becomes active</p> * <p>Note: This ensures that the activation list is used if there is nothing available * in the currently zoomed stack.</p> */ public void testCloseZoomedUnstackedPartAfterActivatingEditor() { IWorkbenchPart previousActive = editor1; IWorkbenchPart zoomedPart = getUnstackedPart(); page.activate(previousActive); zoom(zoomedPart); close(zoomedPart); assertZoomed(null); assertActive(previousActive); } /** * <p>Test: Zoom a stacked part and close an inactive, unstacked editor.</p> * <p>Expected result: No change in activation or zoom</p> */ public void testCloseHiddenUnstackedEditor() { IWorkbenchPart zoomedPart = getStackedPart1(); // Activate another editor to ensure that we aren't closing the active editor page.activate(editor1); zoom(zoomedPart); close(editor3); assertZoomed(zoomedPart); assertActive(zoomedPart); } /** * <p>Test: Zoom a stacked part and close an inactive, unstacked view.</p> * <p>Expected result: No change in activation or zoom</p> */ public void testCloseHiddenUnstackedView() { IWorkbenchPart zoomedPart = getStackedPart1(); zoom(zoomedPart); close(unstackedView); assertZoomed(zoomedPart); assertActive(zoomedPart); } }